/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package it.polimi.Mir_1.paw;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Albo
 */
public class DBconnect {
    
    public static Connection getConnection(){
        
        try {
            // COSTRUISCO LA CLASSE E DEFINISCO UNA STRINGA DI CONNESSIONE CON LE CONFIGURAZIONI DEI PARAMETRI
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(DBconnect.class.getName()).log(Level.SEVERE, null, ex);
        }
       String dburl ="jdbc:mysql://localhost/politics_2.0?user=admin&password=prova"; //--->QUI C'E' LA USERNAME E LA PASSWORD
      
       // CONNESSIONE AL DATABASE
       Connection conn = null;
        try {
            conn = DriverManager.getConnection(dburl);
        } catch (SQLException ex) {
            Logger.getLogger(DBconnect.class.getName()).log(Level.SEVERE, null, ex);
        }
    
       return conn;
    
    }
    
    public boolean insertEvent(String name, Connection conn){
        
       try{ 
        Statement st2 = conn.createStatement();
           String  sql="INSERT INTO eventopolitico (Nome)"
                    + " VALUES(\""+name+"\")";

            st2.execute(sql);        
       
            st2.close();
            return true;
            }catch(Exception e){
            System.out.println("eccezzione"+e.getMessage());
            return false;
            }
            
    
    }
    
    public boolean insertPartito(String name, Connection conn){
        
       try{ 
        Statement st2 = conn.createStatement();
           String  sql="INSERT INTO partito (Nome,idPartito,Programma)"
                    + " VALUES(\""+name+"\",null,null)";

            st2.execute(sql);        
       
            st2.close();
            return true;
            }catch(Exception e){
            System.out.println("eccezione"+e.getMessage());
            return false;
            }
            

        
    }      
        
        public boolean insertCandidato(String nomeCandidato,String cognomeCandidato,
                String nomePartitoApp, Connection conn){
        
       try{ 
        Statement st2 = conn.createStatement();
           String  sql="INSERT INTO candidato (Nome,Cognome,Partitodiappartenenza)"
                    + " VALUES(\""+nomeCandidato+"\" ,\""+cognomeCandidato+"\", \""+nomePartitoApp+"\")";

            st2.execute(sql);        
       
            st2.close();
            return true;
            }catch(Exception e){
            System.out.println("eccezione"+e.getMessage());
            return false;
            }     
    }
        
        public boolean insertNote(String comun, String scadenzeVotaz,Connection conn){
            
            
       try{ 
        Statement st2 = conn.createStatement();
           String  sql= " INSERT INTO  comunicazioniescadenze (comunicazioni,ScadenzeVotazioni)"+
                                    "VALUES (\""+comun+"\",\""+scadenzeVotaz+"\")";
                    
            st2.execute(sql);        
       
            st2.close();
            return true;
            }catch(Exception e){
            System.out.println("eccezione"+e.getMessage());
            return false;
            }     
    }
    
        
        // QUESTO METODO SI COLLEGA ALLA TABELLA UTENTI E INSERISCE I DATI INSERITI ALL'INTERNO DEL FORM
        
       public boolean insertNuovoUtent(String username,String password,
                String nome ,String cognome, Connection conn){
                  
       try{ 
        Statement st2 = conn.createStatement();
        String  sql=" INSERT INTO utente (Username,Password,Nome,Cognome)"
                + " VALUES(\""+username+"\",\""+password+"\",\""+nome+"\",\""+cognome+"\")";

            st2.execute(sql);        
       
            st2.close();
            return true;
            }catch(Exception e){
            System.out.println("eccezione"+e.getMessage());
            return false;
            }     
    
       }
       
             
        public AccessoUtentiRegistrati login(String username,String password, Connection conn){
        boolean utenteLoggato=false;
        AccessoUtentiRegistrati user =null;
        // String utente="";
       try{ 
           ResultSet rs;
        Statement st2 = conn.createStatement();
           String sql="Select username,password,ruolo_utente from utente where Username=\""+username+"\" and Password=\""+password+"\"";
           //esegue query e la mette nel rs
         rs=st2.executeQuery(sql);
         //controllo se reuslt set contiene almeno un utente
         while (rs.next()){
         if (rs.getString(1)!=null && rs.getString(1).length()>0){
             user=new AccessoUtentiRegistrati(rs.getString("username"), rs.getString("password"), rs.getString("ruolo_utente"));
             //utente=rs.getString(1);
         }
      
         }
         rs.close();
         st2.close();
            //return utenteLoggato;
            }catch(Exception e){
            System.out.println("eccezzione"+e.getMessage());
            //utente=" "+e.getMessage();
           
            e.printStackTrace();
          
            }
            return user;
    
    }     
         public List getCandidatibyPartito(String partito, Connection conn){
            String sql="select C.idcandidato,C.cognome,C.nome from PARTITO AS P, candidato AS C WHERE P.idPartito=c.partitodiappartenenza and p.nome= \""+partito+"\"";
            List <String> candidati=new ArrayList<String>();
          
            try{ 
           ResultSet rs;
        Statement st2 = conn.createStatement();
         //esegue query e la mette nel rs
         rs=st2.executeQuery(sql);
         //controllo se reuslt set contiene almeno un utente
         while (rs.next()){
          candidati.add(rs.getString(1)+"|"+rs.getString(2)+""+rs.getString(3));
         }
         rs.close();
         st2.close();
            //return utenteLoggato;
            }catch(Exception e){
            System.out.println("eccezzione"+e.getMessage());
            //utente=" "+e.getMessage();
                  
            e.printStackTrace();
          
             }
           
             return candidati;
         }

         
    
       public boolean insertNuovoVoto(String  idcandidato,String username, Connection conn){
                  
       try{ 
        Statement st2 = conn.createStatement();
        String  sql="INSERT INTO voto (idcandidato,username)"
                + " VALUES(\""+idcandidato+"\",\""+username+"\")";
         st2.execute(sql);        
       
            st2.close();
            return true;
            }catch(Exception e){
            System.out.println("eccezione"+e.getMessage());
            return false;
            }     
    
       }
         
   
           public String getProgrammaPartito(String programma, Connection conn){
               //Select programma from partito where Programma=\""+programma+"\""
            String sql="SELECT programma from partito";
            String programmaPartito ="";
          
            try{ 
           ResultSet rs;
        Statement st2 = conn.createStatement();
         //esegue query e la mette nel rs
         rs=st2.executeQuery(sql);
         //controllo se reuslt set contiene almeno un utente
         while (rs.next()){
          programmaPartito =rs.getString(1);
         }
         rs.close();
         st2.close();
            //return utenteLoggato;
            }catch(Exception e){
            System.out.println("eccezzione"+e.getMessage());
            //utente=" "+e.getMessage();
                  
            e.printStackTrace();
          
             }
           
             return programmaPartito;
         }
  
         
     


       
       
       
       
       
       
       
       
       





}